﻿using famails.bus;
using famails.common;
using FAMailUtils.MailGun;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace famails.BackEnd.page
{
    public partial class ForgotPassword : System.Web.UI.Page
    {
        log4net.ILog logs = log4net.LogManager.GetLogger("ErrorRollingLogFileAppender");
        log4net.ILog logs_info = log4net.LogManager.GetLogger("InfoRollingLogFileAppender");
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                string id = Request.QueryString["fgid"];
                if (id + "" != "")
                {
                    pnlChangePass.Visible = false;
                    pnlChangePassSuccess.Visible = true;
                    UserLoginBUS bus = new UserLoginBUS();
                    DataTable T = bus.GetForgotPassByID(id);
                    if (T != null && T.Rows.Count > 0)
                    {

                        string new_pass = Generate(10);
                        string en_pass = Common.GetMd5Hash(new_pass);

                        if (bus.ChangePass(T.Rows[0]["email"] + "", en_pass))
                        {
                            string subject = "Khôi phục mật khẩu";
                            string body = @"Chào {0} thân mến!<br/><br/>
                        Mật khẩu của bạn đã được khôi phục thành công.<br/><br/>
                        Mật khẩu mới: {1}
                        <br/><br/>
                        Cám ơn bạn!<br/>Hệ thống FAmails.com";
                            ClientBUS cBus = new ClientBUS();
                            DataTable table = cBus.GetByEmail(T.Rows[0]["email"] + "");
                            if (table != null && table.Rows.Count != 0)
                            {
                                body = string.Format(body, table.Rows[0]["clientname"] + "", new_pass);
                                string from = ConfigurationManager.AppSettings["SupportEmail"].ToString();
                                SendMail sendmail = new SendMail(ConfigurationManager.AppSettings["api-key"]);
                                SendResult result = sendmail.SendHtmlMessage(from.Split('@')[1] + "", "Hệ thống FAMails.com", from, T.Rows[0]["email"] + "", subject, body, false);
                            }

                            bus.ForgotPass_Success(id);
                        }

                    }
                    else
                    {
                        pnError.Visible = true;
                        lblError.Text = "Đường dẫn không tồn tại hoặc đã hết hiệu lực!<br/>Vui lòng thực hiện khôi phục mật khẩu lại hoặc liên hệ với chúng tôi để được hướng dẫn thêm";
                    }
                }
                else
                {
                    pnlChangePass.Visible = true;
                    pnlChangePassSuccess.Visible = false;
                }
            }
        }


        public string Generate(int lenght)
        {
            string source = "ZXCVBNMLKJHGFDSAQWERTYUIOP1234567890";
            string result = "";
            Random rd = new Random();
            int i = rd.Next(0, 35);
            for (int y = 0; y < lenght; y++)
            {
                i = rd.Next(0, 35);
                result += source.Substring(i, 1);
            }
            return result;
        }

        protected void btnRepass_Click(object sender, EventArgs e)
        {
            if (EmailTools.IsEmail(txtEmail.Text))
            {
                UserLoginBUS uBus = new UserLoginBUS();
                string newid = Guid.NewGuid().ToString();
                if (uBus.ForgotPass_Insert(newid, txtEmail.Text))
                {
                    string subject = "Khôi phục mật khẩu";
                    string body = @"Chào {0} thân mến!<br/><br/>
                        Vui lòng click vào đường dẫn sau để chúng tôi cập nhật lại mật khẩu cho bạn:<br/>
                        {1}
                        <br/><br/>
                        <i>Lưu ý: đường dẫn trên chỉ có hiệu lực trong vòng 24h kể từ khi được gửi!</i>
                        <br/><br/>
                        Cám ơn bạn!<br/>Hệ thống Famails.com";
                    string resetLink = "http://famails.com/backend/page/forgotpassword.aspx?fgid=" + newid;
                    ClientBUS bus = new ClientBUS();
                    DataTable T = bus.GetByEmail(txtEmail.Text);
                    if (T != null && T.Rows.Count > 0)
                    {
                        body = string.Format(body, T.Rows[0]["clientname"] + "", resetLink);
                        string from = ConfigurationManager.AppSettings["SupportEmail"].ToString();
                        SendMail sendmail = new SendMail(ConfigurationManager.AppSettings["api-key"]);
                        SendResult result = sendmail.SendHtmlMessage(from.Split('@')[1] + "", "Hệ thống FAMails.com", from, txtEmail.Text, subject, body, false);

                        logs_info.Info("ForgotPass User:" + txtEmail.Text);
                        pnError.Visible = false;
                        pnSuccess.Visible = true;
                        lblSuccess.Text = "Vui lòng kiểm tra email!<br/>Chúng tôi đã gửi một email để giúp bạn khôi phục lại mật khẩu dễ dàng và nhanh chóng.";
                    }
                }
            }
            else
            {
                pnError.Visible = true;
                lblError.Text = "Email không đúng định dạng!";
            }
        }
    }
}